package com.smiletrain.util;

import java.util.ArrayList;

import android.content.Context;
import android.os.Environment;
import android.widget.Toast;

import com.smiletrain.R;
import com.smiletrain.base.Caso;
import com.smiletrain.base.Caso.Fotografia;
import com.smiletrain.base.Paciente;
import com.smiletrain.view.ItemCaso;

public class AdminCasos {

	static {
		instance = new AdminCasos();
	}
	
	private AdminCasos(){ }

	public void loadCasos(){
		Caso[] array = (Caso[]) 
				Util.readObject(Environment.getExternalStorageDirectory().getAbsolutePath() + 
						Constantes.OCCUR_PATH + Constantes.OCCUR_FILE);
		
		casos.clear();
		
		if(array == null)
			return;
		
		for(Caso a : array)
			casos.add(a);
		
	}
	
	public void saveCasos() {
		Caso[] array = new Caso[casos.size()];
		int i = 0 , j = 0;
		for(i = 0 , j = 0 ; i < array.length ; i++) {
			if(casos.get(i) != null && 
					casos.get(i).getPaciente() != null && 
					casos.get(i).getPaciente().getNombres() != null &&
					!casos.get(i).getPaciente().getNombres().equals("")){
				array[j++] = casos.get(i);
			}
		}
		
		Util.writeObject(Environment.getExternalStorageDirectory().getAbsolutePath() + 
				Constantes.OCCUR_PATH + Constantes.OCCUR_FILE, array);

		casos.clear();
		
		for(Caso a : array)
			if(a != null)
				casos.add(a);
	}
	
	public int addCaso(Caso c){
		int id = 0;

		if(casos != null && casos.size() != 0){
			int idt = casos.size();
			for(int i = 0 ; i < casos.size(); ){
				Caso ct = casos.get(i);
				if(ct != null && ct.getId() == idt){
					idt++;
					i = 0;
					continue;
				}
				i++;
			}
			if(idt != 0)
				id = idt;
		}
		
		c.setId(id == 0 ? id + 1 : id);
		
		casos.add(c);
		
		return c.getId();
	}
	
	public void setCasoActual(Integer id){
		if(id == null){
			actual = null;
			return;
		}
		for(int i = 0 ; i < casos.size() ; i++){
			Caso c = casos.get(i); 
			if(c!= null && c.getId() == id){
				actual = c;
				break;
			}
		}
	}
	
	public Caso getCasoActual() {
		return actual;
	}
	
	public Caso[] getCasos() {
		Caso[] array = new Caso[casos.size()];
		for(int i = 0 ; i < array.length ; i++)
			array[i] = casos.get(i);
		return array;
	}
	
	public void eliminarCaso(int r) {
		for(int i = 0 ; i < casos.size() ; i++)
			if(casos.get(i).getId() == r){
				casos.remove(i);
				break;
			}
		
		saveCasos();
	}
	
	public ItemCaso[] getItemCasos() {
		
		saveCasos();
		
		ArrayList<ItemCaso> array = new ArrayList<ItemCaso>();
		
		for(int i = 0 ; i < casos.size() ; i++){
			Caso c = casos.get(i);
			if(c != null){
				Paciente p = c.getPaciente();
				String pa = "null";
				if(p != null) 
					pa = p.toString();
				array.add(new ItemCaso(c.getId(), pa));
			}
		}
		
		ItemCaso[] array2 = new ItemCaso[array.size()];
		
		int i = 0;
		for(ItemCaso ic : array)
			array2[i++] = ic;
		
		return array2;
	}
	
	public static boolean validarTipoIntervencion(Caso c, Context context) {
		if(!Constantes.validar)
			return true;
		
		if(c.getIntervencionNumerica().trim().equals("")){
			Toast.makeText(context, Constantes.MSG_VAL01_V02, Toast.LENGTH_SHORT).show();
			return false;
		}
		
		return true;
	}
	
	public static boolean validarPreFotos(Caso c, Context con) {
		if(!Constantes.validar)
			return true;
		
		Fotografia pre = c.getPreFotos(); 

		switch(c.getNumFotografias()){
			case 0:
				return false;
			case 2:
				if(pre.getPathImage2().trim().equals(""))
					return false;
			case 1:
				if(pre.getPathImage1().trim().equals(""))
					return false;
		}

		return true;
	}
	
	public static boolean validarPostFotos(Caso c) {
		if(!Constantes.validar)
			return true;
		
		Fotografia post = c.getPostFotos(); 
		
		switch(c.getNumFotografias()){
			case 0:
				return false;
			case 2:
				if(post.getPathImage2().trim().equals(""))
					return false;
			case 1:
				if(post.getPathImage1().trim().equals(""))
					return false;
		}
		
		return true;
	}
	
	public static boolean validarEnviarEmail(String[] emailTo, String comentarios, Context context) {
		if(!Constantes.validar)
			return true;
		
		boolean valido = true;
		
		if(valido){
			for(String email : emailTo)
				if(email.trim().equals("")){
					valido = false;
					Toast.makeText(context, Constantes.MSG_VAL01_V10, Toast.LENGTH_SHORT).show();
					break;
				}
		}
		
		if(valido){
			if(comentarios.trim().equals("")){
				valido = false;
				Toast.makeText(context, Constantes.MSG_VAL02_V10, Toast.LENGTH_SHORT).show();
			}
		}
		
		return valido;
	}
	
	public int getCirujanos() {
		
		if(actual.getHospital() == null){
			return R.array.v15_cbCirujano01;
		}
		
		if(actual.getHospital().equals("Hospital Civil Alfredo Pumarejo")){
			return R.array.v15_cbCirujano01;
		} else if(actual.getHospital().equals("Hospital Del Issste")){
			return R.array.v15_cbCirujano02;
		} else if(actual.getHospital().equals("Hospital Guadalupe")){
			return R.array.v15_cbCirujano03;
		} else if(actual.getHospital().equals("Hospital San Francisco")){
			return R.array.v15_cbCirujano04;
		} else if(actual.getHospital().equals("Hospital Rural Regional No. 23 de Metepec Hidalgo")){
			return R.array.v15_cbCirujano05;
		} else if(actual.getHospital().equals("CEM Hospital")){
			return R.array.v15_cbCirujano06;
		} else if(actual.getHospital().equals("Hospital Infantil de Monterrey")){
			return R.array.v15_cbCirujano07;
		} else if(actual.getHospital().equals("Hospital San José-tec de Monterrey")){
			return R.array.v15_cbCirujano08;
		} else if(actual.getHospital().equals("Practimed")){
			return R.array.v15_cbCirujano09;
		} else if(actual.getHospital().equals("Hospital de Especialidades Miguel Hidalgo")){
			return R.array.v15_cbCirujano10;
		} else if(actual.getHospital().equals("Hospital Regional Tercer Milenio")){
			return R.array.v15_cbCirujano10;
		} else if(actual.getHospital().equals("Centro ABC")){
			return R.array.v15_cbCirujano12;
		} else if(actual.getHospital().equals("Clinica De Labio y Paladar Hendido A.C.")){
			return R.array.v15_cbCirujano13;
		} else if(actual.getHospital().equals("Hospital General Yanga de Cordoba")){
			return R.array.v15_cbCirujano13;
		} else if(actual.getHospital().equals("Hospital Larrinzar S.S.A.")){
			return R.array.v15_cbCirujano14;
		} else if(actual.getHospital().equals("Clinica Integral Medica Xola SA de CV")){
			return R.array.v15_cbCirujano15;
		} else if(actual.getHospital().equals("Hospital de las Americas")){
			return R.array.v15_cbCirujano15;
		} else if(actual.getHospital().equals("Hospital General de Pollenque")){
			return R.array.v15_cbCirujano15;
		} else if(actual.getHospital().equals("Hospital Infantil de Pesaville")){
			return R.array.v15_cbCirujano15;
		} else if(actual.getHospital().equals("Acapulco General Hospital")){
			return R.array.v15_cbCirujano16;
		} else if(actual.getHospital().equals("Hospital Santa Lucia")){
			return R.array.v15_cbCirujano17;
		} else if(actual.getHospital().equals("Hospital Dr. Gustavo Baz")){
			return R.array.v15_cbCirujano18;
		} else if(actual.getHospital().equals("Hospital Dr. Manuel Campos")){
			return R.array.v15_cbCirujano18;
		} else if(actual.getHospital().equals("Hospital General de Comitán")){
			return R.array.v15_cbCirujano18;
		} else if(actual.getHospital().equals("Hospital General De Ixmiquilpan")){
			return R.array.v15_cbCirujano18;
		} else if(actual.getHospital().equals("Hospital Jesús Kumate Rodríguez")){
			return R.array.v15_cbCirujano18;
		} else if(actual.getHospital().equals("Hospital Margarita Maza de Juárez")){
			return R.array.v15_cbCirujano18;
		} else if(actual.getHospital().equals("IMSS Solidaridad")){
			return R.array.v15_cbCirujano18;
		} else if(actual.getHospital().equals("Hospital Angeles de Torreon")){
			return R.array.v15_cbCirujano19;
		} else if(actual.getHospital().equals("Hospital General de Salubridad de Gomez Palacio")){
			return R.array.v15_cbCirujano19;
		} else if(actual.getHospital().equals("Asociacion Silverio Perez Gutierrez Pro Labio y Paladar Hendido IAP")){
			return R.array.v15_cbCirujano20;
		} else if(actual.getHospital().equals("Club Rotario de Ciudad Juarez Paso del Norte Asociacion Civil")){
			return R.array.v15_cbCirujano21;
		} else if(actual.getHospital().equals("Hospital General de Tlaxcala")){
			return R.array.v15_cbCirujano22;
		} else if(actual.getHospital().equals("Hospital General Dr Manuel Gea Gonzalez")){
			return R.array.v15_cbCirujano23;
		} else if(actual.getHospital().equals("Hospital Infantil de Morelia")){
			return R.array.v15_cbCirujano24;
		} else if(actual.getHospital().equals("Hospital para el Niño del Instituto Materno Infantil del Estado de México")){
			return R.array.v15_cbCirujano25;
		} else if(actual.getHospital().equals("Proyecto Cara Feliz")){
			return R.array.v15_cbCirujano26;
		}
		
		return R.array.v15_cbCirujano26;
	}
	
	public static AdminCasos instance;
	
	private ArrayList<Caso> casos = new ArrayList<Caso>();
	private Caso actual = null;
	
}
